package actas.fcf.cat;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

//import org.jsoup.Jsoup;

import com.opencsv.CSVWriter;

import fcf.cat.Config;
import fcf.cat.DBase;
import fcf.cat.Exportar;
import fcf.cat.Importar;
import fcf.cat.Querys;
import fcf.cat.Utils;

public class ActasSQL {

	public static String newLine = "\n";
	public static String splitBy = ";";

	public static void init() throws SQLException, IOException{
		checkVista(); //comprobamos si existe la vista.
		Exportar.MysqlToCsv(Config.BD_FFCATALUNYA+"."+Config.VISTA_ACTAS,Config.ACTAS_CSV,splitBy,newLine); //Exportamos datos de la vista a csv
		tratarCSV(); // Modificamos el csv 
		Importar.CsvToMysql(Config.BD_RELACIONES,Config.TABLA_ACTAS,"rel_actas.csv",splitBy,newLine); //importamos el csv a la tabla relaciones.equipos
	}
	
	
	public static void checkVista() throws SQLException {
		
		Utils.linea("INICIANDO COMPROBACION VISTA COMPETICIONES");
		
		if(!DBase.existeTabla(Config.BD_FFCATALUNYA,Config.VISTA_ACTAS)){ //comprueba que la vista de competiciones_url exista.Si no la creamos
			
			boolean res = DBase.query(Config.BD_FFCATALUNYA,Querys.vistaActas()); //ejecutamos query de la vista
			
			if(res){
				Utils.linea("VISTA =>"+Config.BD_FFCATALUNYA+" CREADA CORRECTAMENTE");
			}else{
				Utils.linea("NO SE HA CREADO LA VISTA");
			}
		}
	}
	
	/**
	* Modifica el csv con los datos de cada registro que ira a relaciones.competiciones
	*/
	public static void tratarCSV() {
		 
		String csvFile = Config.CSV_FOLDER+Config.ACTAS_CSV;

		BufferedReader br = null;
		
		String line = newLine;
		String cvsSplitBy = splitBy;
		 
		try {
		 
			br = new BufferedReader(new FileReader(csvFile));
			String data = "";
			
			int i = 1;
			
			Utils.linea("Modificando CSV actas....");
			DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy");
			Date date = new Date();
			String inicio = dateFormat.format(date);
			System.out.println(); //2014/08/06 15:59:48
			
			while ((line = br.readLine()) != null) {
				
				String[] aux = line.split(cvsSplitBy);
				String cod_acta = aux[0].replace("\"","");
				String cod_temporada = aux[1].replace("\"","");
				
				String[] temporada_url = aux[2].replace("\"","").split("-");
				String temp1 = temporada_url[0].substring(4 - 2);
				String temp2 = temporada_url[1].substring(4 - 2);
			
				
				String tmp_url = temp1+temp2; 
				String tipo = Utils.validarString(aux[3]);
				String cod_competicion = aux[4];
				String nombre_competicion_url = Utils.validarString(aux[5]);
				String cod_grupo = aux[6];
				//String nombre_grupo = aux[7].replace("\"","");
				String nombre_grupo_url = Utils.validarString(aux[7]);
				
				String cod_equipo_local = aux[8];
				//String nombre_equipo_local = aux[9].replace("\"","");
				String nombre_equipo_local_url = Utils.validarString(aux[9]);
				String categoria_equipo_local = aux[10].replace("\"","").toLowerCase();
				String equipo_local_url = nombre_equipo_local_url+"-"+categoria_equipo_local;
				
				String cod_equipo_visitante = aux[11];
				//String nombre_equipo_visitante = aux[12].replace("\"","");
				String nombre_equipo_visitante_url = Utils.validarString(aux[12]);
				String categoria_equipo_visitante = aux[13].replace("\"","").toLowerCase();
				String equipo_visitante_url = nombre_equipo_visitante_url+"-"+categoria_equipo_visitante;
				/*
				data+=cod_acta+splitBy+cod_temporada+splitBy
					+tmp_url+splitBy+tipo+splitBy
					+cod_competicion+splitBy+nombre_competicion_url+splitBy
					+cod_grupo+splitBy+nombre_grupo_url+splitBy
					+cod_equipo_local+splitBy+equipo_local_url+splitBy
					+cod_equipo_visitante+splitBy+equipo_visitante_url+newLine; */
				
				insertActa(cod_acta,cod_temporada,tmp_url,tipo,cod_competicion,nombre_competicion_url,cod_grupo,nombre_grupo_url,cod_equipo_local,equipo_local_url,cod_equipo_visitante,equipo_visitante_url);
				System.out.println("Acta =>"+cod_acta+" modificada"); 
				i++; 
			 }
			
			//crearCSV(data); //creamos csv competiciones que importaremos a la base de datos

			Date data_final = new Date();
			String d_final = dateFormat.format(data_final);
			Utils.linea("Proceso iniciado => "+inicio+" Finalizado =>"+d_final);
			Utils.linea("Relaciones.actas: "+i+" de registros creados "+Config.CSV_FOLDER+Config.ACTAS_CSV);
			
					 
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	 static Connection conn = DBase.connect(Config.BD_SERVER_NODB+Config.BD_ADMIN,Config.BD_USER,Config.BD_PASS);
	
	public static void insertActa(String cod_acta,String cod_temporada,String tmp_url,String tipo,String cod_competicion,String nombre_competicion_url,String cod_grupo,String nombre_grupo_url,String cod_equipo_local,String equipo_local_url,String cod_equipo_visitante,String equipo_visitante_url){
		

			String query = "INSERT INTO relaciones.actas (codacta,cod_temporada,temporada_url,tipo,cod_competicion,competicion_url,cod_grupo,grupo_url,cod_equipo_l,equipo_l_url,cod_equipo_v,equipo_v_url) VALUES ("+cod_acta+","+cod_temporada+",'"+tmp_url+"','"+tipo+"',"+cod_competicion+",'"+nombre_competicion_url+"',"+cod_grupo+",'"+nombre_grupo_url+"',"+cod_equipo_local+",'"+equipo_local_url+"',"+cod_equipo_visitante+",'"+equipo_visitante_url+"');";

			boolean res = DBase.multi_query(conn,"relaciones",query);
			
			if(res == true){
				//ok++;
			}else{
				//error++;
			}

	}
	
	public static void crearCSV(String data){
		 
		CSVWriter writer = null;
				
	    try {
			writer = new CSVWriter(new FileWriter(Config.CSV_FOLDER+Config.ACTAS_REL_CSV), '\n', CSVWriter.NO_QUOTE_CHARACTER);
		} catch (IOException e1) {
			e1.printStackTrace();
		}

		String[] entries = data.split("\n");
		writer.writeNext(entries);
		
		try {
			writer.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
}
